<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class User extends MY_Controller {

    public function __construct()
    {
        parent::__construct();
    }
    
    /**
     * Index Page for this controller.
     */
    public function index() 
    {
        echo 'user/index'; exit;
    }
    
    /**
     * Login function
     */
    public function login()
    {
        $post = $this->input->post(null, true);
        
        if (!empty($post))
        {
            //Check post data
            if (empty($post['email']) || empty($post['password']))
            {
                $this->session->set_flashdata('error_message', 'Vui lòng điền email và password!');
                redirect('/user/login');
            }
            
            //Get remember flag
            $post['remember'] = isset($post['remember']) ? (bool) $post['remember'] : false;

            //Auth login
            $is_success = $this->auth->login($post['email'], $post['password'], $post['remember']);

            //Check login
            if (!$is_success)
            {
                $this->session->set_flashdata('error_message', 'Email hoặc password chưa chính xác!');
                //Redirec to home page
                redirect('/user/login');
            }            
            
            //Redirect to home page
            redirect('/index');
        }
    }
    
    /**
     * Logout function
     */
    public function logout()
    {
        $this->auth->logout();
        redirect('/index');
    }
    
    /**
     * Register function
     */
    public function register()
    {
        $post = $this->input->post(null, true);
        $error_message = '';
        
        if (!empty($post))
        {
            //Trim data
            $post['firstname'] = trim($post['firstname']);
            $post['lastname'] = trim($post['lastname']);
            
            //Check post data
            if (empty($post['email']) || empty($post['password']) || empty($post['firstname']) || empty($post['lastname'])) {
                $error_message = 'Vui lòng điền đầy đủ thông tin!';
            }
            
            //Load email library
            $this->load->library('Email');
            
            //Check email valid
            if (!$this->email->valid_email($post['email'])) {
                $error_message = 'Email không đúng định dạng!';
            }
            
            //Check length passwork
            if (strlen($post['password']) < 6 || strlen($post['password']) > 32) {
                $error_message = 'Mật khẩu phải từ 6 đến 32 ký tự!';
            }
            
            //Load user model
            $this->load->model('user_model', 'user');
            
            //Check email exist
            if(!$this->user->is_email_exist($post['email'])) {
                $error_message = 'Email này đã tồn tại!';
            }
            
            //Check error
            if(!empty($error_message)) {
                $this->session->set_flashdata('error_message', $error_message);
                redirect('/user/register');
            }
            
            //Set array values
            $arrValues = array(
                'email'         =>  $post['email'],
                'password'      =>  md5($post['password']),
                'firstname'     =>  $post['firstname'],
                'lastname'      =>  $post['lastname'],
                'displayname'   =>  $post['lastname'].' '. $post['firstname'],
                'created_date'  =>  time(),
                'updated_date'  =>  time()
            );
            
            //Insert new user
            $userID = $this->user->insert($arrValues);

            //Check result
            if ($userID > 0){
                //Login
                $is_success = $this->auth->login($post['email'], $post['password']);
                //Redirect to home page
                redirect('/index');
            }else{
                $this->session->set_flashdata('error_message', 'Có lỗi xảy ra, vui lòng thử lại!');
                redirect('/user/register');
            }
        }
    }

}